import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

/**
 * 给你一个整数数组 nums 和一个正整数 k ，返回长度为 k 且最具 竞争力 的 nums 子序列。
 * <p>
 * 数组的子序列是从数组中删除一些元素（可能不删除元素）得到的序列。
 * <p>
 * 在子序列 a 和子序列 b 第一个不相同的位置上，如果 a 中的数字小于 b 中对应的数字，那么我们称子序列 a 比子序列 b（相同长度下）更具 竞争力 。 例如，[1,3,4] 比 [1,3,5] 更具竞争力，在第一个不相同的位置，也就是最后一个位置上， 4 小于 5 。
 */
public class T1673 {
    public static void main(String[] args) {
        int[] nums = new int[]{84,10,71,23,66,61,62,64,34,41,80,25,91,43,4,75,65,13,37,41,46,90,55,8,85,61,95,71};
        Stack<Integer> resultArr = new Stack<>();

        for (int i = 0; i < nums.length; i++) {

            if (24 - resultArr.size() == nums.length - i || resultArr.isEmpty()) {
                resultArr.push(nums[i]);
            } else {
                while (true) {
                    if (resultArr.isEmpty()) {
                        resultArr.push(nums[i]);
                        break;
                    } else {
                        Integer peek = resultArr.peek();
                        if (resultArr.peek() > nums[i]) {
                            resultArr.pop();
                            if (24 - resultArr.size() == nums.length - i){
                                resultArr.push(nums[i]);
                                break;
                            }
                        } else {
                            if (resultArr.size() < 24) {
                                resultArr.push(nums[i]);
                            }
                            break;
                        }
                    }
                }
            }
        }
        System.out.println(resultArr);

    }

}
